1. Field of the Invention
The present invention relates to a data communication apparatus including a transmission control unit which executes a transport layer protocol when performing communication via a packet exchange network, and, in particular, relates to a data communication apparatus which makes it possible to anticipate improvement of the load during communication via a communication path which includes a communication channel involving occasion of temporary delay and transmission of burst-like packets.
Furthermore, the present invention relates to a data communication apparatus which creates a data link which performs retransmission control according to an automatic repeat request (ARQ) algorithm, and in particular relates to a data communication apparatus, with which it is possible to anticipate improvement of throughput.
Priority is claimed on Japanese Patent Application No. 2004-286766, filed Sep. 30, 2004 and Japanese Patent Application No. 2004-286767, filed Sep. 30, 2004 the content of which are incorporated herein by reference.
2. Description of Related Art
In the prior art, TCP (Transmission Control Protocol) is widely known as a transport layer protocol which guarantees reliability during internet communication. TCP is documented in RFC793, RFC1122, RFC2581, RFC2582 and so on, but research is continuing in order to develop improvements. TCP is positioned upon the transport layer in the OSI reference model, and performs control of connection, implementation of stream type communication, control of quality such as error control and flow control and the like, communication with ports designated by port number, and congestion control (a technique which controls communication so that there is no occurrence of a state of congestion in which it becomes impossible to perform effective communication due to increase of traffic upon the network).
In communication based upon TCP, the data which is to be transmitted is divided into small portions of data which is called segments, and these segments are included in and are transmitted in IP (Internet Protocol) packets. When the reception side receives these IP packets, it extracts the segments based upon TCP, and reconstructs the original data by linking them in the appropriate order.
IP is positioned upon the network layer, and regulates communication between hosts which are designated by IP addresses. A TCP connection is established between two ports which are designated by port number, in addition to IP address. Due to this, even if multiple applications are using the communication path at the same time, it is possible to discriminate between them by differences in their port numbers.
Error control in TCP is implemented by ACKs (ACKnowledge: check responses and acknowledgement responses), and ACKs are transmitted from the reception side to the transmission side, with the transmission side retransmitting any data segment for which an ACK is not returned. Furthermore, the transmission side is arranged to transmit data segments of a certain window size, based upon TCP, in order to increase throughput. This method is called sliding window flow control: transmission of a data segment of the window size is permitted, and, when an ACK for this data segment is returned from the reception side, the sequence number of the window is slid. The window upon the transmission side is called the congestion window (cwnd: congestion window), and it also serves for congestion control.
TCP flow control is also performed by notifying a receiver window (rwnd) within the ACKs which are returned from the reception side to the transmission side. This rwnd indicates the amount of data which can be received by the reception side, and, if zero is notified as rwnd, then it is possible to stop transmission. Rwnd is determined depending upon the buffer amount which is provided upon the reception side. The transmission side restricts transmission so as not to exceed the smaller value between rwnd and cwnd.
The objective of such sliding window flow control is, by performing retransmission control with ARQs (Automatic Repeat Requests), along with preventing a state of affairs in which the buffer upon the reception side is insufficient, to enhance throughput. Since communication upon the internet is performed via multiple data links, it is necessary to perform flow control upon the transport layer, without depending upon any specified data link layer.
In the following, the congestion control in TCP will be explained. During congestion control in TCP, slow starting and congestion avoidance action are performed in order to prevent collapse of the network due to congestion. During slow starting, cwnd is set to be small at the start of transmission, and cwnd is increased with exponential growth each time an ACK is returned from the reception side. For example, cwnd may be increased by 1, every time one ACK is returned.
That is to say, it becomes possible to transmit two data segments for a single ACK. Congestion avoidance is the action of increasing cwnd little by little. During such congestion avoidance, cwnd is increased by 1/cwnd every time that a single ACK is returned. In other words, when a number of ACKs equal to cwnd which have been returned, for the present cwnd, cwnd+1 becomes the next value of cwnd. By contrast to flow control which is based on a consideration for the reception side, congestion control is based on a consideration for the network.
Due to the fact that wireless data communication is becoming popular, there is a steady increase of application configurations in which a wireless communication channel is included upon the communication path.
On a high speed wireless communication channel, it sometimes happens that, when a temporary delay occurs, it is accompanied by transmission of packets in a burst-like manner. Upon the data link layer and the physical layer of a wireless communication channel, the reliability is increased by executing a protocol based upon automatic repeat request (ARQ) algorithm. When some receiving terminal which is upon the wireless communication channel detects an error in data which has been received, the receiving terminal requests the transmission side to retransmit that data and stores the data in a temporary buffer during the time interval until the requested data arrives, therefore, this causes delay.
The base station which is the transmission side of the wireless communication channel keeps the data, against the possibility of retransmission, until the receiving terminal returns a reception check response (an ACK). Since it sometimes happens that the quality deteriorates temporarily upon a wireless communication channel, the base station performs adjustment, by changing the modulation method and the data transmission speed in order to prevent too poor error ratio. Even with this, the error ratio upon the wireless communication channel is great as compared with a wire communication channel, therefore, it becomes necessary to perform retransmission control upon a wireless communication channel.
TCP is provided with a so called Delayed ACK mechanism. Delayed ACK is described in RFC1122 and RFC813. With Delayed ACK, the transmission of ACKs is delayed, therefore, an ACK is transmitted when the next ACK is generated, or when there is a timeout, or when a transmitted data segment is generated. If, in the state in which an ACK is delayed, the next ACK is generated, then the ACKs which are transmitted are reduced in the proportion of two to one; and, further, if a data segment is generated, the number of ACKs to be transmitted is reduced by combining ACKs and the data segment.
This Delayed ACK operation has the merit that the number of ACKs is reduced when executing a Telnet application, but it has no particular merit when downloading a large volume of data, on the contrary, it has the demerit that it causes fluctuations in the RTT (Round Trip Time: delay). Furthermore, if the Delayed ACK method is extended and the delay in transmission of ACKs is made large, therefore, the reduction ratio in the number of ACKs becomes great, then, in correspondence thereto, the data segments which are transmitted from the transmission side become burst-like, and it becomes easy for congestion to be generated upon the forward link (going downward).
It should be understood that the following type of concept is per se known as a technique for reduction of ACKs. For an asymmetrical communication path in which the transmission speed of the forward link is high and the transmission speed of the reverse link (upwards) is low, a router is known which, when congestion is taking place upon the reverse link communication path, performs reduction of the number of ACKs by discarding the oldest ACK packet which has already been enqueued in the waiting queue and enqueuing the latest ACK packet in the waiting queue, based upon the buffer management principle of dropping from the head end of the buffer (so called “drop-from-front buffer discipline”). Due to that, in an asymmetrical communication path, congestion can easily take place on the reverse link which has low transmission speed, this apparatus is set up to discard, among the ACK packets which remain within the router and cannot be transmitted, that ACK packet which is the oldest, for which the negative influence of its being discarded is very low.
In the prior art, if the data which has been requested is not retransmitted even though the wireless terminal transmits a repeat request ARQ to the data transmission side, a delay is inserted which is determined by the communication protocol of the wireless communication channel. Although the wireless terminal does wait for a retransmission for some predetermined time period, if this retransmission has expired, the wireless terminal considers that this data has been lost, and outputs the data which is received while waiting for retransmission of this data and that is saved in the buffer to downstream. The bandwidth of the forward link of a wireless communication channel currently attains several hundred kbps, and in the near future it is considered that it will be expanded further. Due to this, after the temporary delay generated in the wireless communication channel, the data packets come to be transmitted in a burst-like manner.
The data communication apparatus which is at the downstream and at which this type of burst-like data segments have arrived, transmits ACK packets based upon TCP in a burst-like manner. However, if part of the data segments is lost, the sequence numbers for the ACKs do not increase. These ACKs are recognized as duplicated ACKs if they have arrived at the transmission side before the TCP retransmission timeout, and a fast transmit algorithm is executed by the transmission side, however, if a retransmission timeout occurs, the transmission side performs retransmission of the data without waiting for an ACK to arrive, based upon TCP.
The situation with the above described communication is shown in FIG. 12. FIG. 12 is a time sequence graph showing the operation of well known prior art type of TCP NewReno (RFC2582) upon the reception side, and, in this figure, time is shown along the horizontal axis, while the sequence numbers are shown along the vertical axis. Here, although a normal time sequence graph is one which is measured at the transmission side, FIG. 12 shows the situation at the reception side. It is supposed that, at the reception side, there exist a wireless terminal which is connected to a wireless transmission channel, and a data communication apparatus on the downstream side which performs input and output of data with this wireless terminal. In FIG. 12, the reception of data segments 30 and the transmission of ACKs 31 for them are plotted. In a section 32, when the data communication apparatus receives a data segment 30 via the wireless terminal, both of the marks are plotted almost over one another, since the data communication apparatus transmits the corresponding ACK 31 directly after only a slight delay.
Although in the section 32 the data segments 30 arrive at the downstream data communication apparatus in a satisfactory manner, a large delay occurs in the section 33. During this interval the wireless terminal waits for the data to be retransmitted, and, moreover, during this interval, the wireless terminal receives the following data as well, and stores the data. When, upon the wireless communication channel, a timeout occurs on the data which was not retransmitted even though the ARQ-message was issued, since the wireless terminal transmits the data which has been accumulated to downstream, as shown in the section 34, a large volume of data segments 30 arrive at the downstream data communication apparatus in a short period of time, and a large volume of ACKs 31 are transmitted in response thereto. However, since a portion of the data segments 30 does not arrive, the sequence numbers of the ACKs are the same and constant, therefore, a large volume of duplicated ACKs are transmitted.
On the transmission side, if duplicated ACKs are detected based upon TCP, or if a retransmission timer has expired, then retransmission of a data segment is performed, and in the section 35 it is shown that this has arrived at the wireless terminal and the downstream data communication apparatus. Since the ACK for the data segment which has been retransmitted contains the sequence number of the data segment which ought to arrive next, accordingly, as shown in the section 35, the ACK number increases. Subsequently, as shown in the section 36, communication recovers in a satisfactory manner.
Since the bandwidth of the wireless communication channel is comparatively narrow, in many cases, a bottleneck occurs in the communication path. Therefore, due to above described type of burst-like ACK packets, communication load increases upon the reverse link of the wireless communication channel. It often happens that only about 1/10th of the bandwidth of the forward link of the wireless communication channel is provided for the bandwidth of its reverse link, therefore, such ACK packets which have been generated in a burst-like manner come to be stored in a transmission queue in the wireless terminal. It should be understood that a line interface device according to TCP/IP is described in Japanese Unexamined Patent Application, First Publication No. H07-67088.
However, since such a temporary large delay in a data packet and the following generation of ACK packets in a burst-like manner typically takes place when the quality of the wireless communication channel has deteriorated, it often happens that the bandwidth at this time upon the reverse link becomes smaller than at normal times, therefore, a problem arises that it takes a long time period before all of burst-like ACKs which have been stored in the transmission queue of the wireless terminal are transmitted. In such a case, a problem also arises that a large time interval becomes necessary for other packets to be transmitted through the reverse link. Furthermore, a problem also arises that there is a possibility that the transmission queue in the wireless terminal may overflow, therefore, an ACK packet or some other packet may be lost.
The present invention has been conceived in the light of the above described problems, and it takes as its objective to provide a data communication apparatus, which can prevent the generation of ACKs in a burst-like manner, and can decrease the transmission load upon the reverse link.
Moreover, in the prior art, along with usage of wireless terminals such as cellular phones or the like, wireless data communication means have become widely spread in which the transmission speed is an average of 600 kbps and is a maximum of 2.4 Mbps. Communication at high reliability is performed upon the wireless communication channel between the base station and the wireless terminal by performing retransmission control, using automatic repeat requests (ARQ). On the other hand, the time period from when the repeat request is issued to when the data is retransmitted constitutes a delay time, and meanwhile data in which no error has occurred arrives at the reception device of the wireless terminal one after another and is stored in the memory. The higher the transmission speed becomes, the greater the amount of data which is temporarily delayed in this manner becomes. For example, if communication at a transmission speed of 600 kbps has been delayed for 500 ms, 37,500 bytes of data comes to be temporarily stored.
The data which has been received with no errors should wait for the arrival of data to be retransmitted according to a transmission control protocol. In TCP, the data is divided into segments, and is transmitted with a sequence number appended to each segment. If the segments are received in a manner such as the sequence numbers are mixed-up, although it is possible to perform reordering upon the reception side, however, the permitted amount for this is normally three segments, and moreover there are also some implementations of TCP which have no capability for such reordering.
In error control for TCP, ACKs (ACKnowledgement: affirmative response; check response) are used: ACKs are transmitted from the reception side upon which data is received to the transmission side, and the transmission side retransmits data for which no ACK is returned. If, upon the reception side, the amount of data which has been received and for which the sequence numbers are mixed up exceeds the maximum amount which can be reordered, the reception side detects that segment loss has occurred, and returns an ACK without increasing the sequence number for the ACK. If the transmission side has received three duplicated ACKs (ACKs for which the ACK numbers duplicate), then fast transmit algorithm of the data starts.
It is considered that the reason why the permissible maximum amount for reordering upon the reception side of TCP is small in this way upon a cable data link such as one according to IEEE802.3 or the like is that the error ratio is low, and moreover it rarely happens that the order of the packets which are received is mixed up, therefore, if the sequence numbers of the data segments were not found, it can be taken that segment loss has been occurred almost every time. Here a data communication apparatus is assumed which, along with performing communication with an external device via a network which includes a wireless communication channel, also outputs data which has been received from an external device to another device downstream. If the data communication apparatus outputs to downstream data even when the sequence numbers of the segments are mixed up, based upon the above described type of TCP, retransmission of the data is performed based upon TCP, and this causes a deterioration of the throughput. Therefore, the throughput of TCP is enhanced if the data which has been received normally is temporarily delayed by the data communication apparatus upon the reception side of the wireless communication channel while waiting for the arrival of the data for which ARQ has been requested so as to keep the order of the sequence numbers of the segments.
However it also may happen that, even though ARQ has been made, the data which has been requested does not arrive, so that the ARQ times out. At this time, the data which has been temporarily stored in the data communication apparatus upon the reception side and in which no error has been included is output all at once to another device, so that the so called delay spike phenomenon occurred. This delay spike phenomenon causes TCP spurious timeouts. A spurious timeout is a phenomenon in which, when an intermediate data link such as a wireless communication channel experiences a long delay, the transmission side of TCP generates a retransmission timeout (RTO), and, since a large number of data segments arrive in a spike manner at the downstream device, a large number of ACKs are generated, and the transmission side performs a large number of useless data retransmission in response to these ACKs. In order to suppress such useless retransmission during such spurious timeouts, it is known that it is effective to utilize the Eifel algorithm.
If the delay spike phenomenon has occurred, due to this, the speed of data which is flowing to downstream of the data communication apparatus increases, and, although it is possible to anticipate the beneficial effect of avoiding deterioration of the throughput, it may cause congestion (a situation in which it becomes impossible to perform effective communication, due to the fact that the traffic upon the network has increased) upon the downlink which is upon downstream of the data communication apparatus. In the following, this will be explained with reference to FIG. 17. FIG. 17 is a time sequence graph showing the data reception situation during a delay spike, when a prior art type data communication apparatus is used. Although, normally, a time sequence graph shows the situation upon the transmission side of TCP, in this case, FIG. 17 shows the situation upon the reception side.
In FIG. 17, time is shown along the horizontal axis, and the sequence numbers of the segments are shown along the vertical axis. The circular symbols denote segments which have arrived at a device downstream of the data communication apparatus, while the vertically oriented quadrilaterals denote the occurrence of ACKs which are transmitted to the transmission side, and the X symbols denote losses. The reception up to the segment 40 proceeds satisfactorily, and the ACKs are transmitted almost simultaneously with the arrival of the data. The ACK corresponding to the segment 40 is the ACK 41. Due to the generation of an ARQ message for the wireless communication channel, the arrival of the segment after the segment 40 is delayed, and subsequently reception is not detected during the 500 ms until the repeat request times out. With a prior art data communication apparatus, after the ARQ message expires, the data which has been delayed and temporarily stored in a RAM (Random Access Memory) is output to the downstream side all together. Due to this, a delay spike is generated. The sharp rise after the segment 42 of FIG. 17 is such a delay spike. The downstream device which has received these segments generates a large number of ACKs (the ACKs after the ACK 43) based upon TCP, and transmits them to the transmission side of the segment. However, since one segment is lost, the sequence numbers of the ACKs in TCP do not increase, so that duplication of the ACKs occurs.
At the tail end of the delay spike, congestion occurs upon the downlink which is upon the downstream of the prior art data communication apparatus, and this is denoted by the lost segment 44 and the following X symbols. Upon the transmission side, the segment whose loss has been notified by a retransmission timeout (RTO), or by duplicated ACKs, is retransmitted based upon TCP. In FIG. 17, the segment which has been retransmitted is received by the data communication apparatus without being influenced from congestion, and is output to the downstream device. The segment which is received by the downstream device is denoted as the segment 46.
An ACK 47 is transmitted for the segment 46. This ACK 47 indicates that, due to congestion, the segment has not arrived. An operation of transmitting a segment indicated by an ACK is possible with so called NewReno or SACK (Selective ACK) TCP. The segment which has been lost due to congestion is notified to the transmission side by the sequence number of the ACK 47, and the transmission side retransmits the segment. Subsequently, the normal transmission mode is recovered.
Furthermore, even if congestion has not occurred upon the downlink at the downstream, it may happen that congestion occurs upon the uplink, due to the reception side generating ACKs in a burst-like manner based upon TCP.
In the following, this will be explained with reference to FIG. 18. Communication proceeds satisfactorily until the segment 50 is received by the device downstream of the data communication apparatus, and the ACK 51 for it is transmitted to the transmission side. After the segment 52 has been delayed upon the wireless communication channel, in the same manner as in FIG. 17, a large number of segments are output to the device upon the downstream side, and the delay spike phenomenon occurs.
Due to the fact that the segment 52 has not been lost, the sequence number of the ACKs suddenly increases, and ACKs are transmitted in a burst-like manner. This situation seems to be close to the spurious timeout phenomenon, however, it is assumed that a retransmission timer does not expire.
The ACK for the segment 54 is lost due to congestion upon the uplink. Due to this, the segment 56 is retransmitted upon the transmission side after a retransmission timeout (RTO) has expired based upon TCP. However the throughput is greatly reduced, since a long time period is required until this retransmission timeout (RTO) expires and moreover after this a slow start is executed.
A slow start is when the transmission side performs transmission by setting the amount of data which can be transmitted all at once (the congestion window: cwnd) to a small value. Furthermore, there is also a possibility that, although congestion such as in FIG. 18 has not occurred upon the uplink, burst-like ACKs arrive at the transmission side, and then burst-like transmission is caused, so that congestion is caused upon the downlink upstream of the data communication apparatus.
It should be understood that a line interface device according to TCP/IP is described in Japanese Patent Publication No. H7-67088.
When congestion upon the downlink such as described above occurs, there is the problem that the throughput deteriorates, due to segment retransmission based upon TCP and the narrowing down of the congestion window. Furthermore when congestion occurs upon the uplink, due to loss of the ACK packets, there is the problem that great deterioration of the throughput occurs due to retransmission timeout (RTO) upon the transmission side with TCP, narrowing down of the congestion window (cwnd), and slow starting. It should be understood that, according to the Eifel algorithm described above, unnecessary segment retransmission due to TCP is suppressed when spurious timeouts occurs, but the problem has not been solved that the throughput deteriorates due to that the delay spike phenomenon itself causes the problem of throughput slowdown.
The present invention has also been conceived in the light of the further problems described above, and it takes as another of its objectives to provide a data communication apparatus, which can avoid occurrence of congestion and avoid deterioration of the throughput, even if the delay spike phenomenon has occurred.